package com.neusoft.pub.cloud.provider.request;

import java.util.List;

/**
 * describe :
 *
 * @author hao.dd
 * @date 2023/7/31
 */
public class InquiryPriceRunDriverRequest extends BaseRequest {
    private Integer dataCenterId;
    /**
     * 实例规格（InstanceType）：用于指定实例的计算能力和配置。
     */
    private String instanceType;
    /**
     * 操作系统（ImageId）：用于指定实例的操作系统镜像，如Linux、Windows等。
     */
    private String imageId;
    /**
     * 系统盘
     */
    private DiskInfo systemDisk;
    /**
     * 数据盘
     */
    private List<DiskInfo> dataDisks;

    /**
     * 网络带宽（InternetMaxBandwidthOut）：用于指定实例的出网带宽，即实例可用于外部网络的最大带宽。
     */
    private Integer internetMaxBandwidthOut;

    /**
     * 网络带宽计费方式
     * PayByBandwidth：按固定带宽计费。
     * PayByTraffic：按带宽流量计费
     */
    private String internetChargeType;
    /**
     * 计费方式
     * 查询云服务器ECS不同计费周期的价格。取值范围：
     * <p>
     * Month：按月计费的价格单位。
     * Year：按年计费的价格单位。
     * Hour（默认）：按小时计费的价格单位。
     * Week：按周计费的价格单位。
     */
    private String priceUnit;
    /**
     * 云服务器ECS的计费时长。取值范围：
     * <p>
     * 当参数PriceUnit取值为Month时：1~9。
     * 当参数PriceUnit取值为Year时：1~5。
     * 当参数PriceUnit取值为Hour时：1。
     * 当参数PriceUnit取值为Week时：1~4。
     */
    private Integer period;
    /**
     * 购买数量
     */
    private Integer amount;

    public Integer getDataCenterId() {
        return dataCenterId;
    }

    public void setDataCenterId(Integer dataCenterId) {
        this.dataCenterId = dataCenterId;
    }

    public String getInstanceType() {
        return instanceType;
    }

    public void setInstanceType(String instanceType) {
        this.instanceType = instanceType;
    }

    public DiskInfo getSystemDisk() {
        return systemDisk;
    }

    public void setSystemDisk(DiskInfo systemDisk) {
        this.systemDisk = systemDisk;
    }

    public List<DiskInfo> getDataDisks() {
        return dataDisks;
    }

    public void setDataDisks(List<DiskInfo> dataDisks) {
        this.dataDisks = dataDisks;
    }

    public Integer getInternetMaxBandwidthOut() {
        return internetMaxBandwidthOut;
    }

    public void setInternetMaxBandwidthOut(Integer internetMaxBandwidthOut) {
        this.internetMaxBandwidthOut = internetMaxBandwidthOut;
    }

    public String getInternetChargeType() {
        return internetChargeType;
    }

    public void setInternetChargeType(String internetChargeType) {
        this.internetChargeType = internetChargeType;
    }

    public String getPriceUnit() {
        return priceUnit;
    }

    public void setPriceUnit(String priceUnit) {
        this.priceUnit = priceUnit;
    }

    public Integer getPeriod() {
        return period;
    }

    public void setPeriod(Integer period) {
        this.period = period;
    }

    public Integer getAmount() {
        return amount;
    }

    public void setAmount(Integer amount) {
        this.amount = amount;
    }

    public String getImageId() {
        return imageId;
    }

    public void setImageId(String imageId) {
        this.imageId = imageId;
    }

    public static class DiskInfo {
        /**
         * 磁盘类型
         */
        private String diskType;
        /**
         * 系统盘类型为ESSD云盘时，区分性能等级。仅当SystemDiskCategory=cloud_essd时该参数有效。取值范围：
         * <p>
         * PL0。 PL1（默认）。 PL2。 PL3。
         */
        private String performanceLevel;
        /**
         * 磁盘大小
         */
        private Integer diskSize;

        public String getDiskType() {
            return diskType;
        }

        public void setDiskType(String diskType) {
            this.diskType = diskType;
        }

        public String getPerformanceLevel() {
            return performanceLevel;
        }

        public void setPerformanceLevel(String performanceLevel) {
            this.performanceLevel = performanceLevel;
        }

        public Integer getDiskSize() {
            return diskSize;
        }

        public void setDiskSize(Integer diskSize) {
            this.diskSize = diskSize;
        }
    }
}
